﻿#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QSqlError>
#include <QMessageBox>
#include"connection.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle(QStringLiteral("自营电脑城"));
    //在界面中引入表
    model = new QSqlTableModel(this);
    model->setTable("price");
    //设置编辑策略
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(model);
    model->select();
}

MainWindow::~MainWindow()
{
    delete ui;
}

/*************************************************
     Description:    提交修改
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_3_clicked()
{
    model->database().transaction();
    if (model->submitAll())
    {
        model->database().commit(); //提交
    }
    else
    {
        model->database().rollback(); //数据回滚
        QMessageBox::warning(this,tr("tableModel"),tr("error:%1").arg(model->lastError().text()));
    }
}
/*************************************************
     Description:    撤销修改
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_4_clicked()
{
    model->revertAll();
}
/*************************************************
     Description:    按品牌名字查找产品
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_clicked()
{
    QString name =ui->lineEdit->text();
    if (name.length())
    {
        model->setFilter(QString("Brand = '%1'").arg(name));
        model->select();
    }
    else
    {
        QMessageBox::warning(this,tr("Warning"),tr("Cannot be empty"));//输入为空则警告
    }
}
/*************************************************
     Description:    显示全表
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_2_clicked()
{
    model->setTable("price");

    model->select();
}
/*************************************************
     Description:    按价格升序
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_7_clicked()
{
    //价格属性，第3列，升序
    model->setSort(2,Qt::AscendingOrder);
    model->select();
}
/*************************************************
     Description:    按价格降序
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_8_clicked()
{
    //价格属性，第3列，降序
    model->setSort(2,Qt::DescendingOrder);
    model->select();
}
/*************************************************
     Description:    删除行
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_6_clicked()
{
    //获取选择的行
    int curRow = ui->tableView->currentIndex().row();
    //删除选中行
    model->removeRow(curRow);
    int ok = QMessageBox::warning(this,tr("Delete"),tr("Sure?"),QMessageBox::Yes,QMessageBox::No);
    if(ok == QMessageBox::No)
    {
        //如果不删除，则撤销操作
        model->revertAll();
    }
    else
    {
        //确认删除
        model->submitAll();
    }
}
/*************************************************
     Description:    增加行
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_5_clicked()
{
    //获取表的行数
    int rowNum = model->rowCount();
    //添加一行
    model->insertRow(rowNum);
    model->setData(model->index(rowNum,0),rowNum);
}
/*************************************************
     Description:    按序号升序重新排序
     return:         void
     Auther:         任占宇
     Time:           2021-1-25
   *************************************************/
void MainWindow::on_pushButton_9_clicked()
{
    //序号属性，第1列，升序
    model->setSort(0,Qt::AscendingOrder);
    model->select();
}
